from functools import wraps
from flask import request

from Utils import JWTUtil
from Utils.APIResponse import APIResponse


def token_required(func):
    @wraps(func)
    def decorated_function(*args, **kwargs):
        token = request.headers.get('Authorization')

        if not token:
            return APIResponse.error({'error': 'Token is missing.'}, 401)

        # 在这里添加解析和验证令牌的代码
        # 可以使用JWT库或其他适用的方法进行解析和验证

        # 示例：验证令牌是否有效
        if not JWTUtil.validate_token(token)['status']:
            return APIResponse.error({'error': 'Invalid token.'}, 401)

        # 如果令牌验证通过，将用户ID添加到kwargs中，以便在视图函数中使用
        kwargs['request_user_id'] = JWTUtil.validate_token(token)['data']['id']

        return func(*args, **kwargs)

    return decorated_function
